package gestionBulletins.controller;

import gestionBulletins.model.Adherent;
import gestionBulletins.model.persistance.DaoAdherent;
import gestionBulletins.view.ConsultWindow;
import gestionBulletins.view.InfosAdherentWindow;
import gestionBulletins.view.InfosEnfantsWindow;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JTable;

/**
 * Listener de la JTable qui affiche les Adhérents dans la vue de consultation.
 * @author Paraita Wohler
 *
 */
public class TableAdherentsActionListener implements ActionListener {

	private InfosAdherentWindow iaw;
	private ConsultWindow cw;
	
	/**
	 * Constructeur
	 * @param cw la vue appelante
	 */
	public TableAdherentsActionListener(ConsultWindow cw) {
		this.cw = cw;
		iaw = cw.getInfosAdherentWindow();
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		String toProcess = e.getActionCommand();
		JTable t = cw.table;
		MyTableModel mt = cw.tableModel;
		if (toProcess.compareTo("infos de l'adhérent") == 0) {
			//iaw.setAdherent(mt.getAdherent(t.getSelectedRow()));
			iaw.setAdherent(mt.getAdherent(t.convertRowIndexToModel(t.getSelectedRow())));
			iaw.setVisible(true);
		}
		/* cas où on veut effacer l'adhérent */
		else {
			if (toProcess.compareTo("Effacer cet adhérent") == 0) {
				int confirmerSuppression = JOptionPane.showConfirmDialog(cw,
						"Voulez vous vraiment supprimer cet adhérent ?",
						"Suppression",
						JOptionPane.YES_NO_OPTION);
				if (confirmerSuppression == 0) {
					//TODO quand on efface un adherent faut effacer ses enfants
					DaoAdherent da = iaw.daoFactory.getDaoAdherent();
					int numLigne = t.convertRowIndexToModel(t.getSelectedRow());
					Adherent adherent = mt.getAdherent(numLigne);
					da.delete(adherent);
					mt.removeRow(numLigne);
					cw.repaint();
				}
			}
			/* cas où on veut voir les enfants de l'adhérent */
			else {
				InfosEnfantsWindow iew = new InfosEnfantsWindow(iaw.getDaoFactory(), mt.getAdherent(t.convertRowIndexToModel(t.getSelectedRow())), iaw);
				iew.setVisible(true);
			}
			t.clearSelection();
		}
	}

}
